//
//  diffBetweenClass_Static.swift
//  SwiftTest
//
//  Created by bym on 2019/8/6.
//  Copyright © 2019 ZZ. All rights reserved.
//

import UIKit

class diffBetweenClass_Static: NSObject {

	override init() {
		diff()
	}
	
}

func diff(){
	//static	修饰存储属性	修饰计算属性	修饰类型方法
	struct Point {
		let x: Double
		let y: Double
		//    修饰存储属性
		static let zero = Point(x: 0, y: 0)
		//    修饰计算属性
		static var ones: [Point] {
			return [Point(x: 1, y: 1)]
		}
		//    修饰类型方法
		static func add(p1: Point, p2: Point) -> Point {
			return Point(x: p1.x + p2.x, y: p1.y + p2.y)
		}
	}
	
	//class 适用的场景
	//修饰类方法	修饰计算属性
	class MyClass {
		//修饰计算属性
		class var age: Int {
			return 10
		}
		
		//class不能修饰类的存储属性
		//Class stored properties not supported in classes; did you mean 'static'?
		//class var var1 : Int = 1;
		//static可以修饰类的存储属性
		static var var1 : Int = 1
		//修饰类方法
		//class修饰的类方法可以继承;见MyClassSubClass类
		class func testFunc() {
			
		}
		//static修饰的类方法不能继承;见MyClassSubClass类
		static func staticFunc(){
			
		}
	}
	
	class MyClassSubClass : MyClass{
		//    修饰计算属性
		override class var age: Int {
			return 10
		}
		//    修饰类方法
		override class func testFunc() {
			
		}
		
	}
	
	
	//class let name = "jack" error: Class stored properties not supported in classes;
}

//在protocol中使用static来修饰类型域上的方法或者计算属性
